﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;


namespace Chenxin.Lib.Utility
{
    //****************************************************************
    //   臣信二手房
    //   Copyright (c) 2010 Chenxin.                        
    //****************************************************************
    //****************************************************************      
    //作成者       :  he.jifeng   
    //创建日期     :  2010-02-24                 
    //確認者       :  確認者          
    //功能概要　   :  序列化
    //****************************************************************
    public class Serializer
    {
        //*******************************************
        //功能概要       ：执行序列化
        //参数説明       ：obj 序列化对象
        //返回值説明     ：序列化结果
        //功能詳細       ：执行序列化
        //作成者         ：he.jifeng
        //作成日         ：2010-02-24 
        //*******************************************
        public static string SerializeObject(object obj)

　　    {
            //序列化对象格式化
　　        System.Runtime.Serialization.IFormatter bf = new BinaryFormatter();
            //返回结果
　　        string result = string.Empty;
            //使用内存流
　　        using(System.IO.MemoryStream ms = new System.IO.MemoryStream())
　　        {
              //序列化到内存流
              bf.Serialize(ms, obj);

              byte[] byt = new byte[ms.Length];

              byt = ms.ToArray();
              //Base64编码
              result = System.Convert.ToBase64String(byt);
              //清空
              ms.Flush();
　　        }
            return result;
　　    }

        //*******************************************
        //功能概要       ：反序列化
        //参数説明       ：obj 反序列化字符串
        //返回值説明     ：反序列化对象
        //功能詳細       ：反序列化
        //作成者         ：he.jifeng
        //作成日         ：2010-02-24 
        //*******************************************
        public static object DeserializeObject(string str)

　　    {
          object obj;
          //序列化对象格式化
          System.Runtime.Serialization.IFormatter bf = new BinaryFormatter();
          //Base64反编码
          byte[] byt = Convert.FromBase64String(str);
          //使用内存流
          using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byt, 0, byt.Length))
          {
              //反序列化
              obj = (object)bf.Deserialize(ms);
          }
          return obj;
　　    }
    }
}
